﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IRadioPlayer.cs" company="">
//   
// </copyright>
// <summary>
//   The RadioPlayer interface.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace TinyRadio.UserInterface.Models
{
    using System;

    using TinyRadio.Models;
    using TinyRadio.UserInterface.Infrastructure;

    /// <summary>The RadioPlayer interface.</summary>
    public interface IRadioPlayer
    {
        #region Public Events

        /// <summary>The state changed.</summary>
        event EventHandler<EventArgs<RadioPlayerState>> StateChanged;

        #endregion

        #region Public Properties

        /// <summary>Gets a value indicating whether can pause.</summary>
        bool CanPause { get; }

        /// <summary>Gets or sets the state.</summary>
        RadioPlayerState State { get; set; }

        #endregion

        #region Public Methods and Operators

        /// <summary>The pause.</summary>
        void Pause();

        /// <summary>The play.</summary>
        void Play();

        /// <summary>The play.</summary>
        /// <param name="radioStation">The radio station.</param>
        void Play(RadioStation radioStation);

        /// <summary>The set volume level.</summary>
        /// <param name="level">The level.</param>
        void SetVolumeLevel(int level);

        /// <summary>The stop.</summary>
        void Stop();

        #endregion
    }
}